package com.example.demo.RabbitMq;

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.UUID;

import static com.example.demo.RabbitMq.RabbitConfig.REGISTER_EXCHANGE;

@Service
public class UserService {
    final RabbitTemplate rabbitTemplate;
    @Autowired
    public UserService(RabbitTemplate rabbitTemplate) {
        this.rabbitTemplate = rabbitTemplate;
        this.rabbitTemplate.setMessageConverter(new Jackson2JsonMessageConverter());
    }






    /**
     * 用户注册主流程
     */
    // 用户注册方法（主流程）
    public User register(User user) {
        // 1. 保存用户到数据库（核心流程，同步执行）
//        User savedUser = userRepository.save(user);
        User savedUser = new User();
        savedUser.setName("Admin");
        savedUser.setEmail("256440961@qq.com");

        // 2. 构建邮件消息并发送到RabbitMQ（异步流程）
        EmailMessage emailMsg = new EmailMessage();
        emailMsg.setMessageId(UUID.randomUUID().toString()); // 生成唯一ID
        emailMsg.setTo(savedUser.getEmail()); // 收件人是注册用户的邮箱
        emailMsg.setSubject("欢迎注册XX平台"); // 邮件主题
        emailMsg.setContent("亲爱的" + savedUser.getName() + "，感谢注册！点击链接激活账号..."); // 内容
        emailMsg.setFromName("XX平台官方团队"); // 发送人昵称

        // 发送到RabbitMQ的邮件队列（交换机已在配置类中绑定队列）
        rabbitTemplate.convertAndSend(REGISTER_EXCHANGE, "", emailMsg);
        // 3. 返回注册成功的用户对象
        System.out.println("用户注册成功：" + savedUser);

        return savedUser;
    }

}
    